// 封装axios 并导出
import axios from 'axios'
import Cookies from 'js-cookie'
// 封装axios 一般处理2件事 
// 01: 定义公共的baseuel timeout header
// 02: 定义axios 请求拦截器和响应拦截器

// 请求拦截器(拦截所有的axios 请求)
axios.interceptors.request.use(function (config) {
    // 获取登录时存在cookie中的jwt 字段
    const jwt = Cookies.get('jwt')
    if (jwt) {
        config.headers['Authorization'] = jwt
    }
    return config;
}, function (error) {
    // Do something with request error
    return Promise.reject(error);
});

// 响应拦截器
axios.interceptors.response.use(function (res) {
    // 一般用于 一般对一些公共响应做判断,比如进行状态码的判断
    //  实时更新 token, 因为token 中时间戳,后端获取时间戳进行当前的登录延时操作判断
    // 每次请求接口都会返回jwt这个标识字段,用最新返回的jwt 去替换掉之前cookie 中的jwt,这样最新的jwt基础上延迟2小时
    if (res.data.context.jwt) {
        Cookies.set('jwt', res.data.context.jwt)
    }

    return res;
}, function (error) {
    // Do something with response error
    return Promise.reject(error);
});


export default axios

